#include "offlinemessagemodel.h"
#include "db.h"
// 对数据库表进行操作

// 存储用户的离线消息
void OfflineMsgModel::insert(int userid, string msg)
{
    // 1.组装sql语句
    char sql[1024]={0};
    sprintf(sql,"insert into offlinemessage(userid,message) values(%d,'%s')",userid,msg.c_str());

    MySQL mysql;
    if(mysql.connect())
    {
        mysql.update(sql);
    }
}

// 删除用户的离线消息
void OfflineMsgModel::remove(int userid)
{
    // 1.组装sql语句
    char sql[1024] = {0};
    sprintf(sql, "delete from offlinemessage where userid = %d", userid);

    MySQL mysql;
    if (mysql.connect())
    {
        mysql.update(sql);
    }
}

// 查询用户的离线消息
vector<string> OfflineMsgModel::query(int userid)
{
    // 1.组装sql语句
    char sql[1024]={0};
    sprintf(sql,"select message from offlinemessage where userid =%d",userid);

    // 存储查询到的用户离线消息,一般来说，用户的离线数据可能会有多行
    vector<string> vec;
    MySQL mysql;
    if(mysql.connect())
    {
        MYSQL_RES* res = mysql.query(sql);
        if(res!=nullptr)
        {
            MYSQL_ROW row;
            // 把userid用户的所有离线消息放入vec中进行返回
            while((row = mysql_fetch_row(res))!=nullptr)  // mysql_fetch_row取出一行数据
            {
                vec.push_back(row[0]);
            }

            // 释放mysql_use_result函数分配的结果集内存
            mysql_free_result(res);
            return vec;
        }
    }
    return vec;
}